A modern day multi-tasking operating system (OS) allows multiple applications to be running at any given time with each application having one or more open windows. By providing this multi-tasking ability to have multiple open windows, users are able to work with more data and access more functionality simultaneously. However, the more windows that are open, the more challenging it can be for users to access a window with the desired data or functionality. Specifically, users switch between the different open windows in order to access the data or functionality that is provided within each window. For example, a user switches to (1) a first window of a document processing application in order to prepare a first document, (2) a second window of the same document processing application in order to prepare a second document, (3) a window of an email application in order to check emails, (4) a window of a media player application in order to play music tracks, (5) a file explorer window in order to access different files, and (6) a window of a web browser application in order to do research on the Internet.
Switching to a window involves making that window frontmost and providing key focus to that window. The graphical user interface (GUI) of the OS provides various means with which to switch to a particular window. A user can click on a desired window with a graphical pointing tool or touch gesture in order to make that window frontmost (i.e., gain access to the data or functionality associated with that window). However, when several windows are simultaneously displayed on-screen, the windows may overlap in a virtual three-dimensional space, based on the ordering with which each window is launched or accessed, also referred to as the z-order of the windows.
In such cases where windows overlap, the user must often rearrange the position of the windows by dragging them to new positions, or minimize or hide one or more obstructing windows in order to disclose the desired window. This laborious method of switching between windows is further exacerbated by the fact that many users forgo the benefits of viewing multiple windows, preferring instead to maximize, or fill the entire screen, with the window that they are currently working with. In so doing, to access a different window, the maximized window must first be minimized or reduced in size, so that other windows appear on-screen, thereby allowing the user to utilize an on-screen pointer to click, move or resize the desired window(s). It is clear that clicking on windows is an inefficient means with which to switch between different windows when multiple windows are simultaneously open. Finding the desired window becomes more challenging, time-consuming, and frustrating as more windows are open, as is often the case with larger screen sizes and/or multiple displays.
To improve upon window switching, the Windows operating system includes a taskbar that includes symbols for windows that the user may click to make a particular window frontmost. Similarly, the Mac OS X includes an application dock that includes symbols for applications that the user may click to make a particular application's window or windows frontmost. The taskbar and dock are spatially dependent graphical tools that require a layer of abstraction as the user must first identify a symbol corresponding to a desired window or application before clicking on that symbol. While often more effective than rearranging and clicking on windows, this manner of switching between windows is still inefficient. For example, when several applications are open, identifying the desired application from the taskbar or dock becomes overly time consuming as the user visually sorts through the multiple symbols in the taskbar or dock to identify a desired window. In the Windows taskbar, the problem is exacerbated when the taskbar becomes overcrowded and the symbols in the taskbar shrink in size to accommodate symbols for all open windows. As the symbols shrink, they become less readable, causing the user to hover the on-screen pointer, one by one, over each of the symbols, and wait until a pop-up text field identifies the name of the desired window. Furthermore, the symbols in the taskbar move around as windows are opened and closed. The user must therefore repeat the spatial identification step of identifying a position of a symbol that corresponds to the window on the taskbar each time. To select a particular document window in the OS X dock, the user must first click and hold the application symbol corresponding to the document, at which point a menu appears which lists all open documents for that application, among other things. The user must then drag the pointer to the name of the desired document and release the mouse. Furthermore, as more applications are in use or retained in the dock, the symbols become smaller and smaller, so that further mouse-over techniques are required to enable the user to identify the correct symbol.
Because of these and other issues, it is sometimes preferable to switch between windows using the discrete inputs of a key-based input device such as a keyboard. In operating systems such as Windows OS and Mac OS, various keystroke shortcuts are available to invoke a window switching function using discrete keyboard inputs. The window switching function allows a user to switch between different windows by pressing and holding at least a first keyboard key (such as a “Command” key) and then tapping a second keyboard key to select a different window to make frontmost. The first key can then be released and the last selected window remains frontmost. Specifically in Mac OS, holding the “Command” key while tapping the “Tab” key switches between different application windows in a first direction and holding the “Command” and “Shift” keys while tapping the “Tab” key switches between different application windows in a second direction that is opposite to the first direction. The window switching function operates loosely based on which application was most recently frontmost, though the order is hard to discern, and therefore essentially becomes random to the user. Similar functionality is provided in the Windows OS, whereby holding the “Alt” key and tapping the “Tab” key invokes a windows switching function that switches between different windows. Complimentary functionality is also available in the Mac OS, whereby holding the “Command” key while tapping the “Tilde” key switches between windows that belong to the currently active application in the Mac OS. Each of these window switching functions is subject to the same ordering issues discussed below.
For purposes of simplicity and clarity, the following discussion generalizes the phrase “window switching function” to include functionality for switching between application windows and functionality for switching between windows of an active application without limitation. This phrase is meant to also encompass switching between windows, applications, and/or other objects or user interface elements of a GUI.
The above referenced window switching functions are inefficiently implemented for various reasons. Firstly, the ordering of windows used by the window switching function becomes essentially randomized to the user when three or more windows are accessed. Specifically, the order of the applications or windows changes in a seemingly random manner. As a result, there is no repeatable or static correspondence between the different windows in the GUI and the order with which the windows can be selected using the window switching function. Secondly, the existing keyboard shortcuts for performing the window switching function requires users to move at least one hand away from the associated home position keys (e.g., “A”, “S”, “D”, “F”, “J”, “K”, “L”, and “;”) when using the window switching function, which leads to time-consuming movements that can result in incorrect keys being pressed. Thirdly, reversing directions using the existing window switching functions is awkward for most users, and many users lack sufficient dexterity or do not know the keyboard shortcut for reversing directions because it requires that two non-adjacent keys be held down while a third key is pressed.
Accordingly, there is a need for improved functionality with which to switch between different application and document windows. Specifically, there is a need to switch between different windows without having to recall the order in which the windows were last accessed, and without regard to which application owns which window.